
//已知如下数组：var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
//编写一个程序将数组扁平化去并除其中重复部分数据，最终得到一个升序且不重复的数组
function resetArr(arr){
    var newArr=arr.flat(Infinity)
    var setArr=[...new Set(newArr)]
    var result=setArr.sort((a, b) => a-b)
    return result
}
function _flat(arr){
    return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?_flat(cur):cur),[])
}
function _set(arr){
    return arr.reduce((pre,cur)=>{
        if(!pre.includes(cur)){
            return pre.concat(cur)
        }else{
            return pre
        }
    },[])
}
function _sort(arr){
    if(arr.length<=1) return arr
    var midIndex=Math.floor(arr.length/2)
    var midVal=arr.splice(midIndex,1)[0]
    let left=[],right=[]
    for(var i=0;i<arr.length;i++){
        if(arr[i]<midVal){
            left.push(arr[i])
        }else{
            right.push(arr[i])
        }
    }
    return _sort(left).concat(midVal,_sort(right))
}
function resetArr2(arr){
    var newArr=_flat(arr)

    var setArr=_set(newArr)
    console.log(setArr)
    var result=_sort(setArr)
    return result
}
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
console.log(resetArr2(arr))
